#ifndef WRAPPER_H
#define WRAPPER_H

#include "generalnames.h"
#include "filesystem.h"
#include "concurrency.h"

#include <string>
using std::string;

//****************************************************************************
//enums, constants etc'
//****************************************************************************
typedef enum OperationMode{PERMUTATIONS, GRAPHCOLORING, BOTH} OperationMode;

#define MAX_THREADS 100

struct CommandLineArguments
{
	int				m_NumOFChainsToProcessParallel;
	string			m_ChainFileName;
	string			m_InputFileName;
	OperationMode	m_Mode;
};

//****************************************************************************
//function declarations
//****************************************************************************
void Usage();
bool ParseCommandLineArguments(int argc, char* argv[], CommandLineArguments *argumentsOut);
int terminateApp(CommandLineArguments *arguments = NULL, FileSystem *fileSystem = NULL, Concurrency *concurrency = NULL);
//****************************************************************************


#endif //WRAPPER_H